Computers are used in many applications. As computer systems continue to evolve, the graphical display requirements of the systems become more demanding. This is especially true in applications where detailed graphical displays must be updated quickly. In many applications that utilize such detailed graphical displays, maintaining the detail of the display can consume large amounts of memory storage space and processing bandwidth.
Computer displays and other high resolution display devices present an image to a viewer as an array of individual picture elements, or pixels. The individual pixels are each given a specific color which corresponds to the color of the image of the location of the particular pixel. The pixels are closely spaced, and the viewer's visual system performs a filtering of the individual pixel colors to form a composite image. If the partitioning of the image into individual pixel elements is performed properly, and the pixels are close enough together, the viewer perceives the displayed array of pixels as a virtually continuous image. Despite the viewer's visual filtering, the viewer remains sensitive to aberrations in the image and video graphics systems must be designed to minimize these aberrations.
In many systems, graphical images for display are sampled and the image is regenerated based on the stored samples. Where the conservation of detail is important, oversampling is often utilized in order to avoid aliasing in the reconstructed graphical image. Oversampling techniques are well known in the art. In an oversampling system, multiple samples of each pixel are stored. Although each pixel is rendered using only a single color value, each of the samples for that particular pixel is used in generating the final color. In effect, a much more detailed, or higher resolution, version of the image is stored in memory, and this version is used to generate each of the colors for the pixels displayed on the screen.
Conventional oversampling in video graphic systems can require large amounts of memory. For example, if the system stores 8 samples for each pixel, and each sample includes 32 bits of color information and a 32-bit Z value, or the depth coordinate value, memory requirements for a high quality images which is 640×480 pixels is nearly 20 million bytes. The disadvantages of this amount of memory usage are apparent. First, the memory storage must be provided, which is costly. Second, the memory accesses required to store and improve the data can consume large amounts of bandwidth within the computing system.
The memory bandwidth issue can become especially troublesome when the bandwidth over a bus structure connecting a memory to a graphics processor is limited. In three-dimensional (3D) graphics processing, stored graphics data is often retrieved from memory and compared with newly generated pixel fragments to determine whether or not the fragments modify the state of the image as it is currently stored. If a determination is made that the fragment modifies the stored pixel information, the new value must be written back to the memory. As such, a large amount of bus bandwidth is required in order to perform both reading and writing operations associated with transferring video graphics data to and from the memory, which is often referred to as a frame buffer.
Therefore, a need exists for an anti-aliasing technique that makes efficient use of memory resources such that less memory space is required for storing the samples, and less bus bandwidth is required in order to perform the blending operations required in 3D graphics applications.